[アップデート] AWS BackupがAmazon FSx for OpenZFSをサポートしました
FSxシリーズ全てのファイルシステムのバックアップをAWS Backupで管理できるぞ
こんにちは、のんピ(@non____97)です。
AWS BackupがAmazon FSx for OpenZFSをサポートしました。
これで、FSxシリーズ全てのファイルシステムのバックアップをAWS Backupで管理できるようになりました。やったね。
AWS Backupに対応したということで、以下のような悩みが解消できます。
- 1時間ごとにバックアップを取得したい
- バックアップの保持期間を1年にしたい
- 指定のボリュームのみバックアップを取得する間隔をカスタマイズしたい
- 別アカウントにバックアップをコピーしたい
AWS BackupがサポートしているFSx for OpenZFSのバックアップの機能は以下の通りです。
機能 | 対応状況 |
---|---|
Cross-Region backup | ✓ |
Cross-account backup | ✓ |
AWS Backup Audit Manager | ✓ |
Incremental backup | ✓ |
Continuous backup and point-in-time restore (PITR) | |
Full AWS Backup management | |
Lifecycle to cold storage | |
Item-level restore |
参考 : What is AWS Backup? - AWS Backup
早速AWS BackupでFSx for OpenZFSのバックアップを取得してみたので紹介します。
FSx for OpenZFSファイルシステムのデプロイ
FSx for OpenZFSファイルシステムをデプロイします。
デプロイはAWS CDKで行います。使用したコードは以下リポジトリに保存しています。
デプロイは7分ほどで完了しました。デプロイしたFSx for OpenZFSファイルシステムをAWS CLIで確認します。
$ aws fsx describe-file-systems { "FileSystems": [ { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-07-14T05:00:21.219000+00:00", "FileSystemId": "fs-057509d8c92f1cb4d", "FileSystemType": "OPENZFS", "Lifecycle": "AVAILABLE", "StorageCapacity": 64, "StorageType": "SSD", "VpcId": "vpc-0148de084c4b0f41a", "SubnetIds": [ "subnet-00da1a809e6109b5a" ], "NetworkInterfaceIds": [ "eni-056ea97820e1f8fe6" ], "DNSName": "fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com", "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d", "Tags": [ { "Key": "aws:cloudformation:stack-name", "Value": "OpenzfsStack" }, { "Key": "aws:cloudformation:logical-id", "Value": "FSxforOpenZFS" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/OpenzfsStack/f7caf3e0-0330-11ed-8127-0ad888b702cf" }, { "Key": "Name", "Value": "fsx-for-openzfs" } ], "OpenZFSConfiguration": { "AutomaticBackupRetentionDays": 31, "CopyTagsToBackups": true, "CopyTagsToVolumes": true, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "ThroughputCapacity": 64, "WeeklyMaintenanceStartTime": "6:17:00", "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 192 }, "RootVolumeId": "fsvol-0d8888da34de4774b" } } ] }
ResourceARN
は後で使用するので控えておきます。
テストファイルの作成
FSx for OpenZFSファイルシステムをマウントして、テストファイルを作成します。
# マウントポイントの作成 $ sudo mkdir /fsx # マウント $ sudo mount -t nfs -o nfsvers=4.1 fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx /fsx # マウントされたことを確認 $ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 471M 0 471M 0% /dev tmpfs tmpfs 479M 0 479M 0% /dev/shm tmpfs tmpfs 479M 408K 478M 1% /run tmpfs tmpfs 479M 0 479M 0% /sys/fs/cgroup /dev/nvme0n1p1 xfs 8.0G 1.5G 6.5G 19% / tmpfs tmpfs 96M 0 96M 0% /run/user/0 fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 0 64G 0% /fsx $ mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx on /fsx type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.46) # テストファイルの作成 $ mkdir /fsx/aws-backup-test $ echo "This is a test file of AWS Backup." > /fsx/aws-backup-test/aws-backup-test.txt # テストファイルの確認 $ ls -l /fsx/aws-backup-test/aws-backup-test.txt -rw-r--r-- 1 ssm-user ssm-user 35 Jul 14 05:08 /fsx/aws-backup-test/aws-backup-test.txt $ cat /fsx/aws-backup-test/aws-backup-test.txt This is a test file of AWS Backup.
AWS Backupの動作確認
AWS Backupプランとルールの作成
AWS Backupプランとルールを作成します。
以前、AWS BackupがFSx for ONTAPをサポートした際はコンソールから作成しました。
同じでは面白くないので、AWS CLIで作成してみます。ちなみにFSx for OpenZFSのバックアップはボリューム単位ではなく、ファイルシステム単位です。
# バックアップ対象のFSx for OpenZFSファイルシステムのARNの指定 $ file_system_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d # AWSアカウントIDの取得 $ aws_account=$(aws sts get-caller-identity \ | jq -r ".Account" ) # AWS Backupプランとルールのパラメータ $ create_backup_plan_input=$(cat <<EOM { "BackupPlan": { "BackupPlanName": "fsx-for-openzfs-backup-plan", "Rules": [ { "RuleName": "fsx-for-openzfs-backup-rule", "TargetBackupVaultName": "Default", "ScheduleExpression": "cron(0 * * * ? *)", "StartWindowMinutes": 60, "CompletionWindowMinutes": 1440, "Lifecycle": { "DeleteAfterDays": 31 }, "RecoveryPointTags": { "KeyName": "fsx-for-openzfs-backup-rule" }, "CopyActions": [ { "Lifecycle": { "DeleteAfterDays": 31 }, "DestinationBackupVaultArn": "arn:aws:backup:ap-northeast-1:$aws_account:backup-vault:Default" } ] } ] }, "BackupPlanTags": { "KeyName": "fsx-for-openzfs-backup-plan" } } EOM ) # AWS Backupプランとルールの作成 $ create_backup_plan_output=$(aws backup create-backup-plan \ --cli-input-json "$create_backup_plan_input" )
リソースの割り当て
AWS Backupプランとルールの作成が完了したら、AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てます。
# AWS BackupプランのID取得 $ backup_plan_id=$(echo "$create_backup_plan_output" \ | jq -r ".BackupPlanId" ) # AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てる時のパラメータ $ create_backup_selection_input=$(cat <<EOM { "BackupPlanId": "$backup_plan_id", "BackupSelection": { "SelectionName": "fsx-for-openzfs", "IamRoleArn": "arn:aws:iam::$aws_account:role/service-role/AWSBackupDefaultServiceRole", "Resources": [ "$file_system_arn" ] } } EOM ) # AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当て $ create_backup_selection_output=$(aws backup create-backup-selection \ --cli-input-json "$create_backup_selection_input" ) # AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てられたか確認 $ aws backup list-backup-selections \ --backup-plan-id "$backup_plan_id" { "BackupSelectionsList": [ { "SelectionId": "6e5c4b1c-34b7-4c4e-bd4e-ffeaaa8a72cc", "SelectionName": "fsx-for-openzfs", "BackupPlanId": "29c9aaef-e1c1-4789-a23a-00f0d808bbb0", "CreationDate": "2022-07-14T05:40:33.171000+00:00", "IamRoleArn": "arn:aws:iam::<AWSアカウントID>:role/service-role/AWSBackupDefaultServiceRole" } ] }
バックアップの確認
バックアップルールでcron(0 * * * ? *)
と指定したので、3:00になるとバックアップジョブが動き始めました。
しばらくするとバックアップジョブのステータスが作成しました
から実行中
、完了
に変わりました。
バックアップボールトを確認すると、バックアップが作成されていることが分かります。
バックアップをクリックすると、有効期限などの詳細を確認することができます。
FSxのコンソールからもバックアップを確認できます。
コピージョブも確認します。
コピージョブのステータスも完了
になっています。
バックアップの詳細を確認します。ソースリージョンやソースアカウントIDなどの情報が記載されています。
FSxのコンソールからもコピーされたバックアップを確認できます。どれがコピーされたバックアップなのか分かりやすくて良いですね。
バックアップからのリストア
それではバックアップからリストアします。
保護されたリソース
のFSx for OpenZFSファイルシステムから復旧ポイントを選択して、復元
をクリックします。
復元オプションは標準の復元
を選択します。
セキュリティグループを選択して、その他の設定はデフォルトのままでバックアップを復元
をクリックします。
リストアジョブが始まりました。
10分弱でリストアジョブのステータスが完了
になりました。
FSxのコンソールを確認すると、ファイルシステムが追加されていました。
AWS CLIからも確認してみます。
$ aws fsx describe-file-systems { "FileSystems": [ { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-07-14T05:00:21.219000+00:00", "FileSystemId": "fs-057509d8c92f1cb4d", "FileSystemType": "OPENZFS", "Lifecycle": "AVAILABLE", "StorageCapacity": 64, "StorageType": "SSD", "VpcId": "vpc-0148de084c4b0f41a", "SubnetIds": [ "subnet-00da1a809e6109b5a" ], "NetworkInterfaceIds": [ "eni-056ea97820e1f8fe6" ], "DNSName": "fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com", "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d", "Tags": [ { "Key": "aws:cloudformation:stack-name", "Value": "OpenzfsStack" }, { "Key": "aws:cloudformation:logical-id", "Value": "FSxforOpenZFS" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/OpenzfsStack/f7caf3e0-0330-11ed-8127-0ad888b702cf" }, { "Key": "Name", "Value": "fsx-for-openzfs" } ], "OpenZFSConfiguration": { "AutomaticBackupRetentionDays": 31, "CopyTagsToBackups": true, "CopyTagsToVolumes": true, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "ThroughputCapacity": 64, "WeeklyMaintenanceStartTime": "6:17:00", "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 192 }, "RootVolumeId": "fsvol-0d8888da34de4774b" } }, { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-07-14T07:54:55.223000+00:00", "FileSystemId": "fs-0e04081bf17d57c30", "FileSystemType": "OPENZFS", "Lifecycle": "AVAILABLE", "StorageCapacity": 64, "StorageType": "SSD", "VpcId": "vpc-0148de084c4b0f41a", "SubnetIds": [ "subnet-00da1a809e6109b5a" ], "NetworkInterfaceIds": [ "eni-02177e3ea01760539" ], "DNSName": "fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com", "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-0e04081bf17d57c30", "Tags": [], "OpenZFSConfiguration": { "AutomaticBackupRetentionDays": 31, "CopyTagsToBackups": false, "CopyTagsToVolumes": false, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "ThroughputCapacity": 64, "WeeklyMaintenanceStartTime": "6:17:00", "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 192 }, "RootVolumeId": "fsvol-0ce12cb664190a046" } } ] }
タグやCopyTagsToBackups
、CopyTagsToVolumes
の値が異なるようです。本番運用する際は、リストア後こちらの値を修正してあげる必要がありますね。
それではリストアしたファイルシステムをマウントして、テストファイルがあるか確認します。
# リストアしたFSx for OpenZFSファイルシステムをマウントするマウントポイントを作成 $ sudo mkdir /fsx_restore # リストアしたFSx for OpenZFSファイルシステムをマウント $ sudo mount -t nfs -o nfsvers=4.1 fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx/ /fsx_restore # マウントされたことを確認 $ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 471M 0 471M 0% /dev tmpfs tmpfs 479M 0 479M 0% /dev/shm tmpfs tmpfs 479M 352K 478M 1% /run tmpfs tmpfs 479M 0 479M 0% /sys/fs/cgroup /dev/nvme0n1p1 xfs 8.0G 1.5G 6.5G 19% / fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 256K 64G 1% /fsx fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 256K 64G 1% /fsx_restore $ mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx on /fsx type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.46) fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx on /fsx_restore type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.43) # テストファイルがあることを確認 $ ls -l /fsx/aws-backup-test/aws-backup-test.txt -rw-r--r-- 1 ssm-user ssm-user 35 Jul 14 05:08 /fsx/aws-backup-test/aws-backup-test.txt $ cat /fsx/aws-backup-test/aws-backup-test.txt This is a test file of AWS Backup.
テストファイルの確認もできました。
バックアップのリージョン間コピーがありがたい
AWS BackupがAmazon FSx for OpenZFSをサポートしたアップデートを紹介しました。
個人的にはバックアップのリージョン間コピーがありがたいなと思いました。DRの対応もAWS Backupを活用すれば楽になるのではと考えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!